Como criar gráficos de múltiplas facetas?

Utilizando a linguagem R e o pacote ggplot2

Wlademir Prates

O que você encontra aqui?

Neste vídeo …

  1. O que é o ggplot?
  2. Aprenda a gerar gráficos de plotagem múltipla com as funções facet_grid e facet_wrap.
  3. Confira 3 dicas para gerar gráficos bem dimensionados. Fique até o final!

O que é o ggplot?

  • É um um pacote para criar gráficos, baseado na “Grámatica dos Gráficos”.

  • Usa componentes semânticos, como escalas e camadas para montar e formatar as visualizações.

Dados para o exemplo

O dado deste exemplo está no repositório https://github.com/wrprates/open-data.

library(readr)
data <- readr::read_csv(
  "https://raw.githubusercontent.com/wrprates/open-data/master/ibm_hr_emplyee_attrition.csv"
)

Primeiras linhas do dado:

Veja mais: Vídeo de dataset para RH no canal.

Vamos aos exemplos …

Gráfico para Contagem

Gráfico de contagem de colaboradores por Gênero

library(ggplot2)

grafico_contagem_genero <- ggplot2::ggplot(
  data,
  ggplot2::aes(
    x = Gender,
    y = EmployeeCount,
    fill = Gender
  )
) +
  ggplot2::labs(x = "Gender") +
  ggplot2::geom_col() +
  scale_fill_manual(values = c("#4192B5", "#E89978"))

Contagem de Gênero

Contagem de Gênero por Departamento - facet_grid()

grafico_contagem_genero +
  ggplot2::facet_grid(~ Department)

Contagem de Gênero por Cargo - facet_wrap()

grafico_contagem_genero +
  ggplot2::facet_wrap(~ JobRole)

Gráficos para percentual

Tabela auxiliar para percentual de colaboradores por Gênero

dado_genero_resumido <- data |>
  dplyr::group_by(Department, Gender) |>
  dplyr::summarise(count_gender = dplyr::n(), .groups = "drop") |>
  dplyr::group_by(Department) |>
  dplyr::mutate(Percent = round(100 * count_gender / sum(count_gender), 2)) |>
  dplyr::ungroup()

Percentual de Gênero por Departamento - facet_grid()

grafico_percentual_genero_departamento <- ggplot2::ggplot(
  dado_genero_resumido, aes(x=Gender, y=Percent, fill=Gender)
) +
  ggplot2::geom_col() +
  ggplot2::scale_fill_manual(values = c("#4192B5", "#E89978")) +
   ggplot2::geom_text(
    aes(label = Percent),
    vjust = -0.5
  ) +
  ggplot2::facet_grid(~ Department)

Percentual de Gênero por Departamento - facet_grid()

Gráficos para múltiplas facetas

Tabela auxiliar para percentual de colaboradores com Demissão Voluntária por JobRole

dado_jobrole_resumido <- data |>
  dplyr::group_by(JobRole, Attrition) |>
  dplyr::summarise(count_attrition = dplyr::n(), .groups = "drop") |>
  dplyr::group_by(JobRole) |>
  dplyr::mutate(Percent = round(100 * count_attrition / sum(count_attrition), 2)) |>
  dplyr::ungroup()

Percentual de Demissão Voluntária por Departamento - facet_wrap()

grafico_departamento_demissao_voluntaria <- ggplot2::ggplot(
  dado_jobrole_resumido, aes(x=Attrition, y=Percent, fill=Attrition)
) +
  ggplot2::geom_col() +
  ggplot2::scale_fill_manual(values = c("#4192B5", "#E89978")) +
   ggplot2::geom_text(
    aes(label = Percent),
    size = 3
  ) +
  ggplot2::facet_wrap(~ JobRole)

Percentual de Demissão Voluntária por Departamento - facet_wrap()

Visualização de dados com o ggplot2

Obrigado!